\ifx\pphlpstyleoptions\undefined \documentstyle{phutguide \else % any extra styles should be added AFTER \pphlpstyleoptions \expandafter\expandafter\expandafter \documentstyle\expandafter[\pphlpstyleoptions]{phutguide % \percentnextline \def\dospecials{\do\\\do\{\do\\do\&\do\#\do\^\do\%\do\~\do\!\do\* \catcode‘!=0 % ! in col. 1 is the .hlp comment character \chardef!!="21 % ‘!!’ gives exclamation mark \catcode‘\1=1 \catcode‘\$=11 \def\Uncatcode{\@noligs \let\do\@makeother \dospecials \def\activate#1{\catcode‘#1=\active % make argument character active \def\makeother{\@ifnextchar[{\@makeother{\@makeother \def\@makeother[#1]#2{\catcode‘#2=#1 \def\c {catcode \string #1 is \ifcase\catcode‘#1 escape\or begingroup\or endgroup\or math\or align\or endline\or parameter\or superscript\or subscript\or ignored\or space\or letter\or other\or active\or comment\or invalid\fi % make underscore a subscript only in math mode \def\underscore{\ifmmode _ \else {\tt\char "5F\fi \activate\_ \let_\underscore \def\paragraph{\@startsection % Not all styles have these defined, so\dots {paragraph{4{\z@}{3.25ex plus 1ex minus .2ex}{1ex plus .2ex {\normalsize\bf \def\subparagraph{\@startsection {subparagraph{5{\parindent{3.25ex plus 1ex minus .2ex{1ex{\(\Diamond\)\sl % + The macro |\helpsection| begins a group, and calls |\gethelpsectionparams| % to get the parameters from the next line. The latter sets the counter % |\helpsectiondepth| to be the first parameter, or increments and negates it, % if the first parameter is the character /, denoting a qualifier line. Then we % call |\dohelpsection|, which uses a |\ifcase| statement to set the section % heading. % In the default case, level~1 headings are ignored, levels 2, 3 and~4 are set % as |\section|, |\subsection| and |\subsubsection|, and level 5 is simply % bulleted. This is because there will be only a single level~1 heading in most % files. If this is not the case, then the command |\multilevelone| should be % given, which sets level~1 headings as |\section|s. \let\helpleveli\@gobble \let\helplevelii\section \let\helpleveliii\subsection \let\helpleveliv\subsubsection \let\helplevelv\subparagraph \def\multilevelone{% Don’t ignore level one headings \let\helpleveli\section \let\helplevelii\subsection \let\helpleveliii\subsubsection \let\helpleveliv\paragraph \let\helplevelv\subparagraph \newcount\helpsectiondepth % We mustn’t do the following within a group, or else things like % |@currentlabel| don’t make it out. \def\helpsection{% \let_\space % so |_|’s in section headings turn to space \activate\^^M % so we can read the arguments — undo these at the end \gethelpsectionparams {\catcode‘\^^M=\active% \gdef\gethelpsectionparams^^M#1#2^^M{% \if/#1 % \ifnum\helpsectiondepth > 0 % \global\helpsectiondepth=-\helpsectiondepth % \global\advance\helpsectiondepth by -1 % \fi % \else % \global\helpsectiondepth=#1 % \fi % \dohelpsection{#2% \gdef\dohelpsection#1{% \ifnum\helpsectiondepth < 0 % \@tempcnta=-\helpsectiondepth \def\arg{\tt /#1% \else % \@tempcnta\helpsectiondepth \def\arg{#1% \fi % \ifcase\@tempcnta \or % \helpleveli {\arg % \xdef\toptopic{\arg % Top-level help topic for use in |\advbox| \or % \helplevelii {\arg \or % \helpleveliii{\arg \or % \helpleveliv {\arg \or % \helplevelv {\arg % \else % \errhelp{See Norman if you need more% \errmessage{There is currently a maximum of five levels of help% \fi % \let_\underscore \catcode‘\^^M=5 % ... again % Undo the redefinition of |_| here, rather than at the end of % |\gethelpsectionparams| so that the active underscore means % |\space| in the argument to the |\helplevel| commands % + We want to be able to select alternate texts depending on whether % we’re producing a \LaTeX\ file or a help library. % For occasional words, use the construction \verb-!<LaTeX text|hlp text>-, % in which case the text should be run through Krish’s preprocessor before % being put into the help library. For this latter reason, it should always be % |!<| rather than |\<|, although they are equivalent to \LaTeX. % To miss out larger chunks of help library text is easy—we just % surround the text with |\iffalse...\fi|, suitably disguised. It’s % unfortunate that this doesn’t look exactly like a \LaTeX\ % environment, but life’s like that\dots. % Putting text in the \LaTeX\ document, whilst keeping it from the % library seems easy—you just prefix the lines with exclamation % marks—but there’s a subtlety in that we must then have at least % one blank space after the ‘!’, which is then interpreted as a % control space, and lines blank apart from the ‘!’ are not % interpreted as new paragraphs. Solve both these latter problems by % making ‘! ignored within the |{TeXtext| environment. Note that % this means that the environment {\em must\/ be ended with % |\end{TeXtext|, rather than |!end|. \let\beginhlptext\iffalse \let\endhlptext\fi \def\TeXtext{\catcode‘\!=9 \let\endTeXtext\relax \def\<#1|#2>{#1 % + A couple of macros for verbatim text. In-line strings should go between % |‘...’|, and complete lines of verbatim material should be preceded by a % |\verbatimline| command. The |!begin{verbatim| environment may be used, but % it must be ended by the string |!end{verbatim|. This means that the ‘ % character should be made active—do this inside a group so we can make other % catcode changes later in this file. % Finally, make ‘!’ an escape character, rather than ignored, in the \TeX text % environment, so that ‘!!’ will give an exclamation mark there. \activate’ \let’\rq {\obeyspaces\global\let =\ % make active space equal to |\ | %\def\hyspace{\discretionary{\char32\relax{\char32\relax{\char32\relax % make spaces hyphen-like %{\activate‘ \gdef‘{\begingroup \catcode"20=12 \Uncatcode \let’\endgroup \tt {\activate‘ \obeyspaces\activate\.\activate\_% % allow spaces, dots and underscores to break verbatim text \gdef‘{\begingroup\Uncatcode\let’\endgroup% \activate\_\def_{\discretionary{\char"5F\relax{{\char"5F\relax% \activate\.\def.{\discretionary{\char"2E\relax{{\char"2E\relax% \obeyspaces\def {\discretionary{\char32\relax{\char32\relax{\char32\relax% \tt \newcount\@verbatimlinecount {\activate\^^M \gdef\verbatimline{\ifvmode \noindent \else \par \fi % If previous line is % blank, |\noindent| means we enter horizontal mode with % previous parskip. Otherwise, |\par| forces us into % vertical mode, and we enter horizontal mode later, with % parskip zero. \begingroup \parskip=0pt \activate\^^M% \@ifnextchar[{\@verbatimline{\@verbatimline[1]% \gdef\@verbatimline[#1]^^M{\@verbatimlinecount=#1 \obeyspaces\Uncatcode % \def\@tempa{TeXtext}\ifx\@tempa\@currenvir\catcode"21=0\fi % re-escape ! in \TeX{text \tt\do@verbatimline% \gdef\do@verbatimline#1^^M{#1\par\noindent % following text on new line % (new paragraph with parskip zero) \advance\@verbatimlinecount by -1 % \ifnum\@verbatimlinecount=0 % \def\next{\endgroup% \else % \def\next{\do@verbatimline% \fi\next \begingroup \catcode ‘|=0 \catcode ‘[= 1 % This is nicked from % |latex.tex|—make |\begin{verbatim| end with % |!end{verbatim| \catcode‘]=2 \catcode ‘\{=12 \catcode ‘\=12 \catcode‘\!=12 |gdef|@xverbatim#1!end{verbatim[#1|end[verbatim]] |gdef|@sxverbatim#1!end{verbatim*[#1|end[verbatim*]] |endgroup % likewise—make verbatim environment within \TeX text have ! as escape \def\verbatim{\

 \frenchspacing\@vobeyspaces
    \ifx\@tempa\@currenvir \catcode"21=0\fi \@xverbatim}
\@namedef{verbatim*}{\@verbatim \ifx\@tempa\@currenvir \catcode"21=0\fi
    \@sxverbatim}
% bits and bobs
\def\settab#1{\catcode`#1=4}	    % set the tab character for setting tables
\chardef\star`*			    % |*...*| emphasises things
\activate* \def\emphasise#1*{{\em #1\/}}
\def*{\ifmmode\star\else\emphasise\fi}
\escapechar=`\!			    % so we're free to recatcode backslash
\activate`			    % make it active again
\parskip=\medskipamount
\parindent=0pt
\let\helpproc\@gobble		    % instruction to Krish's preprocessor
\@ifundefined{pphlppreamble}{}{\pphlppreamble}
%%%%%%%%%%%%%%% Now read in the file %%%%%%%%%%%%%%%%%%%
!begin{document}
!input{!pphlpname}
!advbox
!end{document}

This document was generated on January 31, 2023 using texi2html 5.0.